Almost all electronic devices require memory for data storage. Flash memory devices have become increasingly commonly used either as permanently installed internal data storage devices or as removable data storage devices, for example memory cards.
File Allocation Table (FAT) based file systems are commonly used for both embedded and removable data storage devices. FAT systems are particularly useful for removable data storage devices as they are supported by most operating systems used in personal computers, and thus present few interoperability or compatibility issues.
A FAT file system stores a file allocation table on the data storage device, which identifies where each file is stored at the hardware level of the data storage device, by mapping hardware level elements, referred to as clusters, to each stored file. The file allocation table also stores other information concerning the stored files, the file system, and the hardware level structure, in the form of metadata. However, earlier versions of FAT file systems cannot cope with long file names, and those later versions that can cope with long file names do so in a relatively inefficient manner.
Examples of adaptations that may be used in FAT file systems to support file names longer than 11 characters are described in U.S. Pat. No. 5,758,352 and U.S. Pat. No. 5,579,517. Both a short file name and a long file name is stored for each file in a common name space. If a long file name is used for a file then the system automatically assigns a short file name to the file also. Applications or devices that support long file names use the stored long file name for a file, whereas applications or devices that support short file names use the stored short file name for a file. That approach can be inefficient as it requires the duplication of storage of long and short file names. Furthermore, the use of two different file names for the same file can result in difficulties with consistency and reliability.
Some known file systems, for example Ext3 or ZFS, support long file names without modification. Such known file systems can also provide additional desirable features, for example power-fail-safe writing of data.
However, such alternative known file systems that inherently support long file names are less prevalent than the FAT file system, and can present compatibility and interoperability issues. That can present particular problems in the case of removable data storage devices, which may be required to be compatible with a wide variety of electronic devices or operating systems.
It is known to use combinations of file systems and, for example, to embed one file system inside another using a loopback arrangement. For example, in Linux Live CDs, a read-only Joliet file system is provided in combination with a further RamFS file system. The RamFS file system operates as a read/write layer over the CD's Joliot file system whilst in operation but is not power-fail-safe and anything stored in RamFS is lost when the RAM is not powered. The RamFS and Joliot file systems have different maximum file length limits.
In another example, it is known to hold an Ext2 or Ext3 file system inside an NTFS file system on a personal computer, for example as provided in a VMWare Linux image. The user is able to read and write data freely from or to either the Ext2/Ext3 or NTFS file system in the personal computer.